Dropbox是一家坐落在旧金山的初创公司,在全球拥有5亿用户。随着规模的扩大, Dropbox弃用亚马逊云服务,自主建设了庞大的数据中心。这是一个工程上的壮举,它的意义也远远超出了Dropbox本身。
Dropbox看上去只是计算机桌面上的一个文件夹,但有了它,你可以轻松愉快地把文件储存在互联网上,或者把文件发送给其他人,或者在你的笔记本电脑、手机和平板电脑上进行同步。这个文件夹使用起来轻松自然,几乎不会消耗你的脑细胞。但是在这个文件夹的幕后,却有一个工程上的壮举。 Dropbox使用的大型机器网络代表着一种力量,在过去十年里,这种力量让互联网的核心发生了巨大变化。而在今天,它又迈入了一个令人瞩目的新阶段。
在公司诞生之后的最初8年里, Dropbox为5亿计算机用户储存了海量文件。但是它并没有把这些文件真正存储在自己的地盘上。就像近年来很多其他科技初创公司一样,Dropbox也把东西储存在了“亚马逊云服务”上面。那是一个非常受欢迎的服务,由世界上最大的在线零售商亚马逊提供。任何人都可以使用亚马逊云服务来构建运行自己的软件,无需自己架设硬件。换句话说,Dropbox的海量文件是储存在亚马逊的机器上,而不是Dropbox自己拥有和运行的机器上的。
但现在不再是这样了。在过去的两年半的时间里, Dropbox自己架设了庞大的计算机网络,把海量文件转移到了一系列新的机器上,这些新机器是公司自己的工程师设计的,机器上运行的软件系统,也是由公司自己的程序员使用一种崭新的编程语言开发的。这些工程师和程序员,曾经在互联网巨头谷歌(微博)、Facebook和Twitter开发过类似的技术,拥有丰富的经验。现在,Dropbox已经将大约90%的文件搬到了这个新的网上王国里面。
毋庸置疑,这是一个宏大的工程壮举。但这一举动的意义远远超出了Dropbox本身。它突显了云计算如何正在迅速改变企业的经营方式。与此同时,它也揭示了一些翻天地覆的变化是如何在过去十年里席卷全球硬件市场的。
如今,越来越多的公司正在搬到“云端”--而不是离开云端。根据调研机构Forrester的预测,随着谷歌和微软这样的巨头进入云服务市场,挑战亚马逊的领军地位,到2020年,云计算的规模预计将达到 1910亿美元。亚马逊拒绝对此事进行置评,但该公司去年第四季度的财报显示,亚马逊web服务部门营收为 24.1亿美元,相当于年化营收逾 96亿美元--注意,这是在Dropbox离开之后的数字。
但是,有些公司变得日益庞大,到达了这样一个阶段:弃用别人提供的云服务,使用自己的定制技术,搭建自己的网络,反倒更加省钱。由于规模经济效应,亚马逊、谷歌、微软可以把云服务的价格保持在比较低廉的水平上。但它们向别人收取的价格也并非就是云服务的成本价。 “没有人把云服务当做慈善事业来做,” 曾经在facebook工作过的Dropbox工程副总裁阿迪亚·阿加瓦尔(Aditya Agarwal)说,“这个服务总归是有利润的。”如果你自己的规模足够庞大,那么不使用云服务,反而可以节省不少资金。而Dropbox现在已经达到了这样的规模。
尽管如此,建立这种规模的网络是一项非常艰巨的任务,并不是每一家公司都适合。 “正确的想法其实应该是:不要自己动手去做,” 乌尔斯·霍泽尔说。 他曾是加州大学圣巴巴拉分校的教授,也是谷歌的第八位员工,主持了谷歌全球网络的建立,现在在帮助运营该公司的云计算服务。他解释说,大多数公司都没有庞大到规模经济的程度,也缺乏相应的技能。如果公司的增长停滞了,这么做反而会让公司骑虎难下。Dropbox似乎也有一丝这样的迹象。近几个月来,专家和投资者对Dropbox不太看好,说它100亿美元的估值水分很大,因为该公司在吸引真正的企业客户方面进展缓慢。
但是霍泽尔也承认,对于有些公司来说,这么做也挺合理。至少就目前来说,Dropbox就是属于这种类型的公司。据Dropbox首席运营官丹尼斯·伍德赛德(Dennis Woodside)说,他们自己架设这个网络已经具有了“巨大的经济价值”.实际上,在弃用亚马逊云服务的同时,Dropbox也展示了为什么云服务如此强大。该公司自己也修筑了基础设施,让别人无需再做这件事。而且,Dropbox自己也是一个云服务公司。它把数据转移到自己的庞大网络上,此举也让它加入了亚马逊、谷歌和微软的行列,把全球硬件市场(以及整个IT行业)朝着一个全新的方向推动。
文件的未来
亚马逊是云服务市场的主力军。它的主要竞争者是谷歌和微软。使用这三家公司提供的服务,其他公司或者独立程序员可以构建并运行任何软件,而不用架设自己的硬件。这样的好处,只有全球最大的科技公司才能提供。
与此同时,二级市场也在不断增长。这个市场以Dropbox为中心,它的主要竞争对手包括Box.com、Saleforce.com等等。这些公司处在一个不同的垂直市场--在互联网上提供预先构建的软件。就像巨头公司一样,它们也提供了一些工具,让企业和开发人员无需搭建自己的硬件,就可以利用这些工具--这正是云服务的吸引力的精髓。 “这个行业的下一个重要时代,就是平台之战,”Box.com的首席执行官亚伦·莱维(Aaron Levie)说。 “关键问题是:企业要在哪个平台上构建自己的服务?”
Dropbox希望自己能成为其中的一个赢家,因此决定大手笔建设自己的云服务。但是,事情并没有那么容易。该公司将会面临来自亚马逊、谷歌和微软的日益激烈的竞争。事实上,这些巨头已经在挑战Dropbox和Box这一类文件共享工具了。文件共享市场未来有可能萎缩。单独文件(单独的照片和视频,Word文档和电子表格)的共享,将变得不再那么重要。文件不是智能手机上的核心。而且有了Slack这种随时连线的消息和协作服务之后,在桌面上,文件也离中心舞台越来越远了。
Dropbox也很清楚这一切。该公司的巨大估值,已经让它成为了备受专家和投资者责难的“独角兽”.最近几个月里,没有哪一家初创公司承受的压力比Dropbox更大,有很多人都对它在企业业务领域与互联网巨头对抗的能力表示了质疑。从该公司高管的一些发言来看,很明显,Dropbox清楚的意识到了世界正在发生变化。在该公司花费了这么多的时间、金钱和精力打造自己的全球网络之后,现在的问题是,公司自身的变化是否顺应了这个世界的发展方向?
合理之处
詹姆斯·考林(James Cowling)在麻省理工学院读书的时候,就认识了Dropbox的创业者。当时他在那里读研究生,专业方向是分布式计算系统(在几十个、几百个,甚至上千个设备上运行的计算系统),他和最早的一批Dropbox员工一起研究这个课题,就这样,他认识了Dropbox的联合创始人兼首席执行官德鲁·休斯顿(Drew Houston)。在Dropbox不断成长的过程中,他们一直保持着联系,而且一起讨论过弃用亚马逊云服务的条件和方式。 “这个想法似乎非常大胆,”考林说。
考林说,2012年,互联网上最大胆的创新公司谷歌曾想把他招募到Spanner团队。Spanner是谷歌的全球数据库,该公司的大量在线服务都以它为依托。而且,Spanner可能也是地球上的最大最复杂的数据库,是分布式系统中最有分布式特性的一个。但是考林还是决定去Dropbox工作。 “我想创建一些东西,”考林说。Spanner已经建好了,但Dropbox的数据王国还没有。
Dropbox在诞生之后的大部分时间里,都采用了部分上使用亚马逊云服务,部分上使用自己数据中心相结合的方式。用户通过Dropbox共享文件时,该公司就把这些文件储存在亚马逊的Simple Storage Service(简称为S3)上,同时把这些文件的所有元数据--即它们属于谁,允许哪些人下载--存放在Dropbox自己数据中心的机器上。
该公司的基础设施副总裁阿卡利·古普塔(Akhil Gupta)曾在谷歌工作。考林和古普塔以及其他人一起,设计了一个全面的软件系统,Dropbox可以存储存储成百上千PG的数据--相当于数以亿计个优盘的存储量--而且储存效率比在亚马逊S3上高得多。他们给这个系统取名“魔法口袋”(Magic Pocket)。 “我们的构想是,你可以把你所有的东西都存放在Dropbox上,不会迷路,不会找不到东西,你随时都可以使用它们,它就像一个魔法口袋。”古普塔说。
从本质上说,他们相当于是建立了公司自己的亚马逊S3,所不同的,只是他们专门设计了软件,用来解决该公司特定的技术问题。 “这不是对等替换,”阿加瓦尔说。 “而是一个专门为我们自己度身定制的东西。”
即便是在Dropbox还没有搬离亚马逊的时候,亚马逊就已经表现得像是Dropbox的竞争对手了。亚马逊提供了自己的文件共享服务,虽然它缺乏Dropbox那样的用户友好度,而且品牌知名度也不如Dropbox,但这不免让规模相对较小的Dropbox感到担心。不过阿加瓦尔说,弃用亚马逊云服务主要是财务上的原因,而不是竞争上的原因。“你必须把这些科技巨头想象是一个国家--友好邻邦,虽然你可能会与它们发生这样那样的小冲突,”他说。 “亚马逊在很多领域都很出色,但我认为,当一家云储存提供商并不是它们的首要任务,这和我们不一样。”
事情最好真的能像他希望的那样,因为Dropbox已经压下了它的全部赌注。它根据自己的需要开发了自己的软件。而且还不仅仅是如此,Dropbox也度身定制了硬件:它自己设计了计算机。
定制硬件
多年以来,互联网巨头谷歌、Facebook、微软和亚马逊都在为自己的数据中心设计硬件--计算机服务器、网络交换机,有些时候还包括用来储存大量数据的硬件。这些公司别无选择,只能自己动手处理所有一切:因为它们的在线王国已经变得如此庞大,使用通用设备只会更加昂贵、更加困难。它们需要的是新型硬件--更便宜、更精简、更具可塑性。因此,它们和硬件制造商一起,和亚洲本地的零部件供应商一起,设计制造了专门的设备。
如今,谷歌建造的服务器比全世界其他任何一家公司都多--包括那些销售服务器的厂商。亚马逊和微软在这方面也没落后。而且,由于这些公司提供云计算服务,很多其他企业现在采用的硬件也和传统的通用硬件有差别--特别是在Facebook开源了其定制设备的设计之后。现在,一些供应商,包括广达这样的亚洲制造商,都在销售基于Facebook硬件的产品。
拉米·阿加马(Rami Aljamal)亲身经历这个变化。他在Twitter设计了一系列精简机型,也在戴尔的新部门DCS工作过(戴尔设立这个部门,是希望夺回市场份额。谷歌等公司设计自己的硬件,让戴尔损失了一些市场份额)。现在,他在Dropbox的设计机器。就像谷歌、亚马逊和微软一样,Dropbox认为它也必须拥有适合自己独特需求的机器。
Dropbox存储了海量数据,因此它需要适合开展这个任务的机器。阿加马和他的团队在 Dropbox总部一个实验室里面设计了这种机器,他们称之为Diskotech. “我们最关心的东西是磁盘,” 阿加马说。 “所有信息都储存在磁盘上。”Diskotech宽约45厘米,长约106厘米,高15厘米,可存储多达1 PB数据(100万GB)。只需要50台这样的机器,就可以储存人类有史以来写过的一切东西。
进行更换
考林和同事从2013年夏天开始开发“魔法口袋”软件,花了大约6个月的时间完成了初始代码。但是,这只是他们迈出的一小步。在系统建成之后,他们必须确保软件能够正常工作,必须让它在多个数据中心数以千计的机器正常运行。他们不得不为公司的新硬件改写软件,而且还得把所有的数据都搬离亚马逊。
整个过程花了两年的时间。毫无疑问,这样的项目是技术上的一大挑战。但是与此同时,它也是后勤上的一个挑战。在互联网上移动如此之多的数据是一回事,把这么多的机器搬到数据中心又是另外一回事,而且他们必须在Dropbox继续为亿万用户提供服务的同时做到这两件事。 “就好比是一辆正在行驶的汽车,你希望能够在开车的同时,还能够更换轮胎。”机器扩张工作的负责人丹·威廉姆斯(Dan Williams,曾是Facebook网络工程师)表示。也就是说,在进行这些变更的时候,Dropbox不能停运。它不能对亿万用户说:你们的文件暂时无法使用了。这个艰巨任务圆满完成的最佳指标之一,就是用户完全注意不到公司有这样的变化。
考林和同事在写完最初的代码之后,就在一种比较标准的硬件上面进行了测试。他们的目标是连续测试180天不会出现重大错误。团队甚至在Dropbox总部的墙上挂了一个倒计时钟。两个月之后,测试出现了一个错误--可能会把数据存储到错误的地方--然后他们又把倒计时钟调回到180天。测试总共历时8个月。
团队觉得这个系统可以正式运行的时候,就把代码移到了越来越多的系统上,同时也从亚马逊复制了越来越多数据。公司与亚马逊的主要合约将在六个月后期满,他们决心到那个时候完成搬迁过程,这样就不需要续签合同了。 “留给我们打开降落伞的时间非常短,”考林说。
把数据从亚马逊迁移到其他数据中心,这是一个史诗级的任务。从一台机器移动PB级的数据到另一台机器上,和下载几首歌到你的笔记本计算机上不可同日而语。即使是最快的互联网通道,带宽也是有限的。事实上,传输4 PB数据大概会花一天的时间。 “你会受光速所限,”阿加瓦尔说。
同时,他们还必须把计算机运到数据中心架设好。你可以把这想成是你公司的IT人员为一个新员工安装计算机--但是以Dropbox那样的规模。这种工作必须在有限的时间内完成。因为如果不迅速设置好数据中心,他们就无法迅速地从亚马逊移动数据。该公司每天安装四十到五十个机架,每个机架上安放八台单独的机器。有一次他们遇到一个事故,不过不是计算机类型的事故。机器是用卡车运到Dropbox各个数据中心的,那一次是在24小时之内,有两辆前往不同数据中心的卡车先后发生了事故。
尽管出现了这样那样的麻烦,Dropbox还是在最后期限之前完成了任务。它没有与亚马逊续签合同。不过该公司在欧洲的业务还是在继续使用亚马逊云服务--这只不过是因为Dropbox在欧洲的发展不太稳定--但是,古普塔的团队把所有文件中的90%都搬迁到了Dropbox的数据中心。
改换编程语言
随着数据搬离亚马逊云服务,硬件工程师阿加马和一个叫杰米·特纳(Jamie Turner)的程序员开始行动起来。Dropbox的“魔法口袋”--类似于亚马逊文件存储系统--仍然在普通机器上运行,下一步就是把它搬到该公司定制的硬件上。特纳在学校读的是英语专业,后来却成为了工程师,他曾在多个高科技初创公司的工作过。他与阿加马合作,确保定制的硬件能够与软件良好契合。阿加马和其他硬件工程师设计的Diskotech机器可以容纳PB级的数据。但是这里面有个问题,就是“魔法口袋”和新硬件不太兼容。于是,特纳开始用一种完全不同的编程语言重新编写“魔法口袋”.
可能你会觉得有点奇怪。为什么要把代码安装到数以千计的机器里,然后更改这些代码,再把它们安装到数以千计的其他机器里?但是在规模巨大的互联网数据中心,事情就是这样操作的。机器迅速变得老旧,不断出现问题,然后你就得替换它们。在大型数据中心,升级设备是一种常态。所以,Dropbox先确保“魔法口袋”可以在通用的机器上运行,然后定制硬件,然后必须确保“魔法口袋”和新的硬件能够良好契合。
考林、特纳和同事最初是用谷歌的Go语言来编写“魔法口袋”的。这是因为Dropbox在追随一种更广泛的趋势。Go语言是专门为大规模分布式在线系统设计的,苹果有类似的Swift,Mozilla也推出了自己的Rust,此外还有一种独立语言叫D.程序员可以用它们快速编写出可以大规模跨机器(跨越数以百计或者数以千计的机器)快速运行的软件。
但是对于该公司希望建立的大型储存系统来说,Go的“内存占用”(在运行“魔法口袋”的时候所需要的计算机内存量)太大了。 Dropbox需要一种占用内存较少的语言,因为有这么多的文件流传输到机器上,会占用非常多的内存。所以在这个长达两年半的项目的中间,他们改用Rust编写了Diskotech设备的软件。Dropbox的数据中心现在采用的就是这样的软硬组合。
可能面临的危险
这是一项非常艰巨的工程。但是,像谷歌、亚马逊和Dropbox公司做了这样的事情之后,其他公司就不必再经历这样的麻烦了。这就是云计算的力量。当然,Dropbox不是谷歌,也不是亚马逊。它不为程序员和企业提供基本计算能力和基础设施,来让他们建立和运行自己喜欢的任何软件。但是有了它,个人和企业确实无需架设专门的硬件可以共享和存储文件。Dropbox希望“共享”会成为一个平台,这就是为什么它创建了一个名为Dropbox Paper的在线文本编辑器和协作工具的原因:外部开发人员可以把自己的应用放在它的服务上。
问题是,亚马逊、谷歌和微软也在扩张自己的服务,这可能会限制Dropbox的增长。在这样的情况下,该公司自己建设的数据中心可能反而会成为一种累赘。旧金山的社交游戏公司Zynga在进入高增长阶段的时候,就弃用云服务,建立了自己的数据中心。但是后来,它的业务一落千丈,新建的基础设施没有用上。现在它又重新回到了亚马逊云服务上。
Dropbox的一个优势是,阿加瓦尔、古普塔、威廉姆斯都有过这方面的经验。丹·威廉姆斯说, “如果你已经在Facebook或谷歌做过这样的事情,你对这种高增长可能就会有点上瘾的感觉,”威廉姆斯说。“你会很怀念那种感觉。”
这并不说他们做的是花架子,因为数据中心确实可能会帮助公司节省大量成本。但是,就像烟瘾酒瘾一样,这种“高增长瘾”本身也蕴含着某种程度的威胁。硅谷有一种说法,叫作“NIH综合征”,指一些公司创建各式各样的新东西,只是因为它们有这种创建新东西的癖好。
无论这个举动是否能帮助Dropbox达成预期的目标,该公司现在都拥有了自己的数据中心。这代表着一种态度,一种从谷歌开始逐渐扩散到整个硅谷的态度。谷歌之所以获得巨大成功,不仅仅是因为它创建了一个很出色的互联网搜索引擎,也是因为它创建了支持该搜索引擎大规模运行的底层技术--以及其他很多服务。后来Facebook从谷歌招募了很多员工,差不多也是走的这条路。Twitter也是如此。现在Dropbox也走上了这条路。要成为一个巨人,你可能需要站在别人的肩上。但是,一旦你成为了巨人,你就会觉得,有必要建设一个适合自己的家园了。
本文网址: